﻿using System;
using System.Data;
using System.Text.RegularExpressions;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using DataInfo;
using KenLib.BusinessManager;
using System.Drawing;
using XBLib.Dal.AdoDal; 

public partial class Org_frmO_EmpDegreeByCompInput : System.Web.UI.Page
{
    /*
    資格コード:Văn bằng code
    発令開始日:Ngày bắt đầu ban hành
    実際開始日:Thực tế ngày bắt đầu
    登録:Thành viên
    リセット:Thiết lập lại
    */
    protected void Page_Load(object sender, EventArgs e)
    {
        ((Org_MasterPage)this.Master).changeTitle("資格情報登録");
        ((Org_MasterPage)this.Master).HideLiArea("frmO_EmpDegreeByCompInput");

		if (Session["人コード"] == null)
		{
			Response.Redirect("../frmD_Login.aspx");
		}
		else if (Session["人コード"].ToString() == "")
		{
			Response.Redirect("../frmD_Login.aspx");
		}

		if (Request.UrlReferrer != null)
		{
			string PageRequest = Request.UrlReferrer.ToString();

			if (PageRequest.IndexOf("frmO_EmpContractTypeInput.aspx") > 0 || PageRequest.IndexOf("frmO_EmpDivisionInput.aspx") > 0)
			{
				if (Session["社員ID"] == null)
					Response.Redirect("../frm_MainMenu.aspx");
				else if (Session["社員ID"].ToString() == "")
					Response.Redirect("../frm_MainMenu.aspx");

				Session["Action_frmO_EmpContractTypeInput"] = "insert";
			}
			if (PageRequest.IndexOf("frmO_EmpBasicInfo.aspx") > 0)
			{
				Session["Action_frmO_EmpContractTypeInput"] = "update";
				btn_次.Visible = false;
			}
		}
		else
		{
			if (Session["Action_frmO_EmpContractTypeInput"] != null && Session["Action_frmO_EmpContractTypeInput"].ToString() == "update")
				Response.Redirect("frmO_EmpBasicInfo.aspx");
		}

		try
		{
			string id = "";
			string id2 = "";

			if (Session["Action_frmO_EmpContractTypeInput"].ToString() == "update")
			{
				id = Request.QueryString["id"] != null ? Request.QueryString["id"] : "";
				ViewState["資格情報_社員ID"] = Int32.Parse(id);

				id2 = Request.QueryString["id2"] != null ? Request.QueryString["id2"] : "";
				ViewState["資格情報ID"] = id2 != "" ? Int32.Parse(id2) : 0;
			}
			else
			{
				ViewState["資格情報_社員ID"] = Int32.Parse(Session["社員ID"].ToString());
			}
		}
		catch
		{
			Response.Redirect("frmO_EmpBasicInfo.aspx");
		}

        if (!IsPostBack)
        {
            bind資格コード();
            ddl_資格コード.Focus();

			int 社員ID = Int32.Parse(ViewState["資格情報_社員ID"].ToString());
			LoadGrv資格情報一覧(社員ID);

			string ER00001 = GetError("ER00001");
			string ER00005 = GetError("ER00005");
			string ER00006 = GetError("ER00006");
			string ER00007 = GetError("ER00007");

			RequiredFieldValidator資格名.ErrorMessage = ER00007;
			RequiredFieldValidator発令開始日.ErrorMessage = ER00001;
			RequiredFieldValidator実際開始日.ErrorMessage = ER00001;
			CustomValidator発令開始日.ErrorMessage = ER00006;
			CustomValidator1.ErrorMessage = ER00001;
			CustomValidator実際開始日.ErrorMessage = ER00006;
			CustomValidator2.ErrorMessage = ER00005;

			if (Session["Action_frmO_EmpContractTypeInput"].ToString() == "update")
				LoadInfo_Reset資格情報(社員ID);
        }
    }
	protected void LoadInfo_Reset資格情報(int 社員ID)
	{
		資格情報Manager frm = new 資格情報Manager();
		int ID2 = Int32.Parse(ViewState["資格情報ID"].ToString());
		if (ID2 != 0)
		{
			DataTable dt = frm.SelectInfo資格情報_ByID(ID2, 社員ID);
			if (dt.Rows.Count > 0)
			{
				ddl_資格コード.SelectedValue = dt.Rows[0]["資格コード"].ToString() != "0" ? dt.Rows[0]["資格コード"].ToString() : "-1";
				txt_実際開始日.Text = dt.Rows[0]["実際開始日"].ToString() != "" ? DateTime.Parse(dt.Rows[0]["実際開始日"].ToString()).ToString("yyyy/MM/dd") : "";
				txt_発令開始日.Text = dt.Rows[0]["発令開始日"].ToString() != "" ? DateTime.Parse(dt.Rows[0]["発令開始日"].ToString()).ToString("yyyy/MM/dd") : "";

				btn登録.Text = "更新";
				Session["Action_frmO_EmpDivisionInput"] = "update";
			}
			else
			{
				Response.Redirect("frmO_EmpList.aspx");
			}
		}
		else
		{
			btn登録.Text = "登録";
			Label 資格名 = (Label)grv_資格情報一覧.Rows[0].FindControl("lbl_資格名");
			if (資格名 == null)
			{
				AppCode_Common.ShowEmtyGrid<資格情報>(grv_資格情報一覧, 3, "データがありません。", "");
			}
		}
	}
    protected void btn_戻る_Click(object sender, EventArgs e)
    {
		if (btn_次.Visible == false)
			Response.Redirect("frmO_EmpBasicInfo.aspx?id=" + ViewState["資格情報_社員ID"].ToString() + "#113");
		else
			Response.Redirect("frmO_EmpContractTypeInput.aspx");
    }
    protected void btn_次_Click(object sender, EventArgs e)
    {
        Response.Redirect("frmO_EmpDivisionInput.aspx");
    }
    public void bind資格コード()
    {
        try
        {
            資格コードManager frm = new 資格コードManager();
            DataTable dt = frm.Select資格コード();
            ddl_資格コード.DataSource = dt;
            ddl_資格コード.DataTextField = "資格名";
            ddl_資格コード.DataValueField = "ID";
            ddl_資格コード.DataBind();

            ListItem 選択 = new ListItem("[選択]", "-1");
            ddl_資格コード.Items.Insert(0, 選択);
        }
        catch { }
    }
    protected void btn登録_Click(object sender, EventArgs e)
    {
        string str_実際開始日 = txt_実際開始日.Text;
        string str_発令開始日 = txt_発令開始日.Text;
        string str_資格コード = ddl_資格コード.SelectedValue;

		
		資格情報 obj = new 資格情報();
		obj.社員ID = Int32.Parse(ViewState["資格情報_社員ID"].ToString());
        obj.廃止区分 = 0;


        if (str_実際開始日.Length > 0)
        {
            obj.実際開始日 = DateTime.Parse(str_実際開始日);
        }
        
        if (str_発令開始日.Length > 0)
        {
            obj.発令開始日 = DateTime.Parse(str_発令開始日);
        }
        
        if (str_資格コード != "-1")
        {
            obj.資格 = ddl_資格コード.SelectedItem.Text;
            obj.資格コード = str_資格コード;
        }

		if (btn登録.Text == "登録")
		{
			資格コードManager frm = new 資格コードManager();
			ViewState["RowID_Color"] = frm.Insert資格情報(obj);
			ViewState["Row_Class_Name"] = "insert";
		}
		else {
			資格情報Manager frm = new 資格情報Manager();
			int 資格情報ID = 0;

			if (ViewState["資格情報_GrvID"] != null)
				資格情報ID = Int32.Parse(ViewState["資格情報_GrvID"].ToString());
			else
				資格情報ID = Int32.Parse(ViewState["資格情報ID"].ToString());

			ViewState["RowID_Color"] = 資格情報ID.ToString();
			ViewState["Row_Class_Name"] = "update";

			frm.UpdateInfo資格情報_ByID(obj, 資格情報ID);
		}

		ViewState["資格情報ID"] = ViewState["RowID_Color"];
		ResetForm();
		ViewState.Remove("資格情報_GrvID");
		ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "regis", "aReady();", true);
    }
    protected void btnリセット_Click(object sender, EventArgs e)
    {
		ViewState["RowID_Color"] = "";
		ResetForm();
    }

	protected void ResetForm() {
		int 社員ID = Int32.Parse(ViewState["資格情報_社員ID"].ToString());
		if (Request.QueryString["id2"] != null)
		{
			LoadInfo_Reset資格情報(社員ID);
		}
		else
		{
			ddl_資格コード.SelectedValue = "-1";
			txt_実際開始日.Text = "";
			txt_発令開始日.Text = "";
			btn登録.Text = "登録";
		}

		LoadGrv資格情報一覧(社員ID);
	}
    
    public String GetError(string errorid)
    {
        string error = "";
        Error er = new Error();
        er.ErrorID = errorid;
        ErrorManager frm_error = new ErrorManager();
        DataTable dt = frm_error.getError(er);
        if (dt.Rows.Count > 0)
            error = dt.Rows[0][2].ToString();
        return error;
    }

	protected void LoadGrv資格情報一覧(int 社員ID)
	{
		資格情報Manager frm = new 資格情報Manager();
        DataTable dt = frm.SelectData資格情報(社員ID);
		if (dt.Rows.Count > 0)
		{
			grv_資格情報一覧.DataSource = dt;
			grv_資格情報一覧.DataBind();

			ViewState["CurrentTable"] = dt;
		}
		else
		{
			AppCode_Common.ShowEmtyGrid<資格情報>(grv_資格情報一覧, 3, "データがありません。", "");
		}
	}


	protected void grv_資格情報一覧_PreRender(object sender, EventArgs e)
	{
		if (ViewState["Row_Class_Name"] != null)
		{
			string class_name = ViewState["Row_Class_Name"].ToString();
			for (int i = 0; i < grv_資格情報一覧.Rows.Count; i++)
			{
				string grv_id = grv_資格情報一覧.DataKeys[i].Value.ToString();
				string compare_id = (string)ViewState["RowID_Color"];
				if (grv_id == compare_id)
				{
					grv_資格情報一覧.Rows[i].CssClass = class_name;
				}
			}
		}
	}

	protected void grv_資格情報一覧_RowCommand(object sender, GridViewCommandEventArgs e)
	{
		try
		{
			if (e.CommandName.Equals("LoadUpdate"))
			{
				int index = grv_資格情報一覧.Rows[Convert.ToInt32(e.CommandArgument)].DataItemIndex;
				DataTable dt = (DataTable)ViewState["CurrentTable"];

				ddl_資格コード.SelectedValue = dt.Rows[index]["資格コード"].ToString() != "0" ? dt.Rows[index]["資格コード"].ToString() : "-1";
				txt_実際開始日.Text = dt.Rows[index]["実際開始日"].ToString() != "" ? DateTime.Parse(dt.Rows[index]["実際開始日"].ToString()).ToString("yyyy/MM/dd") : "";
				txt_発令開始日.Text = dt.Rows[index]["発令開始日"].ToString() != "" ? DateTime.Parse(dt.Rows[index]["発令開始日"].ToString()).ToString("yyyy/MM/dd") : "";

				btn登録.Text = "更新";

				ViewState["資格情報_GrvID"] = dt.Rows[index]["ID"].ToString();
			}
		}
		catch(Exception ex) {
			Response.Write(ex.StackTrace);
		}

		ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "regis", "aReady();", true);
	}

	protected void grv_資格情報一覧_SelectedIndexChanging(object sender, GridViewPageEventArgs e)
	{
		grv_資格情報一覧.PageIndex = e.NewPageIndex;
		int 社員ID = Int32.Parse(ViewState["資格情報_社員ID"].ToString());
		LoadGrv資格情報一覧(社員ID);
		ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "regis", "aReady();", true);
	}

	protected void grv_資格情報一覧_RowDataBound(object sender, GridViewRowEventArgs e)
	{
		if (e.Row.RowType == DataControlRowType.DataRow)
		{
			e.Row.Attributes.Add("onclick", "javascript:__doPostBack('ctl00$ContentPlaceHolder1$grv_資格情報一覧','LoadUpdate$" + e.Row.RowIndex + "')");
		}
	}
}
